Node.js URL Module

Node.js இல் URL தீர்மானம் மற்றும் பாகுபடுத்துதலுக்கான பயன்பாடுகளை கற்றுக்கொள்ளுங்கள்

உள்ளமைக்கப்பட்ட URL தொகுதி

URL தொகுதி URL தீர்மானம் மற்றும் பாகுபடுத்துதலுக்கான பயன்பாடுகளை வழங்குகிறது.

இது ஒரு வலை முகவரியை வாசிக்கக்கூடிய பகுதிகளாகப் பிரிக்கவும், URLகளைக் கட்டமைக்கவும் மற்றும் வெவ்வேறு URL கூறுகளைக் கையாளவும் பயன்படுத்தப்படலாம்.

URL பாகுபடுத்துதல்

URLகளை வாசிக்கக்கூடிய பகுதிகளாகப் பிரித்தல்

URL கட்டமைப்பு

புதிய URLகளை உருவாக்குதல்

URL கூறுகளை கையாளுதல்

வெவ்வேறு URL பகுதிகளை மாற்றுதல்

தொடங்குதல்

URL தொகுதியைச் சேர்க்க, require() முறையைப் பயன்படுத்தவும்.

நவீன Node.js (v10.0.0+) இல், நீங்கள் பாரம்பரிய API அல்லது புதிய URL வகுப்பை (WHATWG URL API) பயன்படுத்தலாம்:

எடுத்துக்காட்டு

// Using the legacy API
const url = require('url');

// Using the modern URL class (WHATWG API)
const { URL } = require('url');

எடுத்துக்காட்டு

let url = require('url');
let adr = 'http://localhost:8080/default.htm?year=2017&month=february';
let q = url.parse(adr, true);

console.log(q.host);
console.log(q.pathname);
console.log(q.search);

let qdata = q.query;
console.log(qdata.month);

💡 விளக்கம்:

url.parse() முறையுடன் ஒரு முகவரியைப் பாகுபடுத்தவும், அது ஒவ்வொரு பகுதியையும் பண்புகளாகக் கொண்ட URL பொருளை வழங்கும்.

URL பாகுபடுத்துதல் மற்றும் வடிவமைத்தல்

URL பொருள் பண்புகள்

நீங்கள் ஒரு URL ஐப் பாகுபடுத்தும்போது, பின்வரும் பண்புகளைக் கொண்ட ஒரு URL பொருளைப் பெறுவீர்கள்:

பண்பு விளக்கம் எடுத்துக்காட்டு
href பாகுபடுத்தப்பட்ட முழு URL 'http://localhost:8080/default.htm?year=2017'
protocol நெறிமுறை திட்டம் 'http:'
host முழு ஹோஸ்ட் பகுதி 'localhost:8080'
hostname ஹோஸ்ட்பெயர் பகுதி 'localhost'
port குறிப்பிடப்பட்டால் போர்ட் எண் '8080'
pathname URL இன் பாதை பிரிவு '/default.htm'
search முன்னணி ? உட்பட வினா சரம் '?year=2017&month=february'
query ? இல்லாமல் வினா சரம் அல்லது பாகுபடுத்தப்பட்ட வினா பொருள் 'year=2017&month=february'
hash # உட்பட துண்டு அடையாளங்காட்டி '#section'

பாரம்பரிய API vs WHATWG URL API

எடுத்துக்காட்டு

const { URL } = require('url');

// Using the WHATWG URL API (recommended for new code)
const myURL = new URL('https://example.org:8080/p/a/t/h?query=string#hash');
console.log(myURL.hostname); // 'example.org'
console.log(myURL.pathname); // '/p/a/t/h'
console.log(myURL.searchParams.get('query')); // 'string'

// Using the legacy API
const parsedUrl = require('url').parse('https://example.org:8080/p/a/t/h?query=string#hash');
console.log(parsedUrl.host); // 'example.org:8080'
console.log(parsedUrl.query); // 'query=string'

🚀 பரிந்துரை:

புதிய குறியீட்டிற்கு WHATWG URL API பரிந்துரைக்கப்படுகிறது, ஏனெனில் இது நவீன வலை தரநிலைகளுடன் இணக்கமாக உள்ளது மற்றும் சிறந்த பாதுகாப்பு அம்சங்களைக் கொண்டுள்ளது.

URLSearchParams API

URLSearchParams API URL இன் வினா சரத்துடன் பணிபுரிய பயன்பாட்டு முறைகளை வழங்குகிறது:

எடுத்துக்காட்டு

const { URL, URLSearchParams } = require('url');

const myURL = new URL('https://example.com/?name=Kai&age=30');
const params = new URLSearchParams(myURL.search);

// Get a parameter
console.log(params.get('name')); // 'Kai'

// Add a parameter
params.append('city', 'Stavanger');

// Delete a parameter
params.delete('age');

// Convert to string
console.log(params.toString()); // 'name=Kai&city=Stavanger'

Node.js கோப்பு சேவையகம்

இப்போது வினா சரத்தை எவ்வாறு பாகுபடுத்துவது என்பது எங்களுக்குத் தெரியும், மேலும் கடந்த அத்தியாயத்தில் Node.js கோப்பு சேவையகமாக செயல்பட எப்படி செய்வது என்று கற்றுக்கொண்டோம்.

இரண்டையும் இணைத்து, வாடிக்கையாளர் கோரிய கோப்பை வழங்குவோம்.

இரண்டு HTML கோப்புகளை உருவாக்கி அவற்றை உங்கள் node.js கோப்புகள் இருக்கும் அதே கோப்புறையில் சேமிக்கவும்.

summer.html

<!DOCTYPE html>
<html>
<body>
<h1>Summer</h1>
<p>I love the sun!</p>
</body>
</html>

winter.html

<!DOCTYPE html>
<html>
<body>
<h1>Winter</h1>
<p>I love the snow!</p>
</body>
</html>

demo_fileserver.js:

let http = require('http');
let url = require('url');
let fs = require('fs');

http.createServer(function (req, res) {
  let q = url.parse(req.url, true);
  let filename = "." + q.pathname;
  fs.readFile(filename, function(err, data) {
    if (err) {
      res.writeHead(404, {'Content-Type': 'text/html'});
      return res.end("404 Not Found");
    }
 
    res.writeHead(200, {'Content-Type': 'text/html'});
    res.write(data);
    return res.end();
  });
}).listen(8080);

கோப்பைத் தொடங்கவும்:

C:\Users\Your Name>node demo_fileserver.js

🌐 முடிவுகள்:

நீங்கள் உங்கள் கணினியில் அதே படிகளைப் பின்பற்றியிருந்தால், இந்த இரண்டு முகவரிகளைத் திறக்கும் போது இரண்டு வெவ்வேறு முடிவுகளைக் காண வேண்டும்:

http://localhost:8080/summer.html - இந்த முடிவை உருவாக்கும்:

<h1>Summer</h1>
<p>I love the sun!</p>

http://localhost:8080/winter.html - இந்த முடிவை உருவாக்கும்:

<h1>Winter</h1>
<p>I love the snow!</p>

சிறந்த நடைமுறைகள்

1. எப்போதும் URLகளை சரிபார்க்கவும் மற்றும் சுத்திகரிக்கவும்

எடுத்துக்காட்டு

function isValidHttpUrl(string) {
  try {
    const url = new URL(string);
    return url.protocol === 'http:' || url.protocol === 'https:';
  } catch (err) {
    return false;
  }
}

console.log(isValidHttpUrl('https://example.com')); // true
console.log(isValidHttpUrl('ftp://example.com')); // false

2. பாதுகாப்பாக URLகளைக் கட்டமைத்தல்

எடுத்துக்காட்டு

const { URL } = require('url');

// Safe way to construct URLs
function createProfileUrl(domain, username) {
  return new URL(`/users/${encodeURIComponent(username)}`, domain).href;
}

console.log(createProfileUrl('https://example.com', 'johndoe'));
// 'https://example.com/users/johndoe'

3. வினா அளவுருக்களைக் கையாளுதல்

எடுத்துக்காட்டு

const { URL } = require('url');

// Parse URL with query parameters
const url = new URL('https://example.com/search?q=node.js&lang=en');

// Get all parameters
console.log(url.searchParams.toString()); // 'q=node.js&lang=en'

// Get specific parameter
console.log(url.searchParams.get('q')); // 'node.js'

// Check if parameter exists
console.log(url.searchParams.has('lang')); // true

// Add new parameter
url.searchParams.append('page', '2');
console.log(url.href);
// 'https://example.com/search?q=node.js&lang=en&page=2'

🔒 பாதுகாப்பு குறிப்புகள்:

  • எப்போதும் பயனர் உள்ளீட்டு URLகளை சரிபார்க்கவும்
  • URL கட்டுமானத்திற்கு encodeURIComponent() பயன்படுத்தவும்
  • சரியான பிழை கையாளுதலை செயல்படுத்தவும்
  • URL ரீடைரக்ட்களை கையாளும் போது கவனமாக இருங்கள்

பயிற்சி

ஹோஸ்ட்பெயர் மற்றும் போர்ட்டைக் கொண்ட URL பொருளின் சரியான பண்பு பெயரை இழுத்து விடவும்.

The ______ property.

host
✓ சரி! host பண்பு ஹோஸ்ட்பெயர் மற்றும் போர்ட்டைக் கொண்டுள்ளது (எ.கா., 'localhost:8080').
hostname
✗ தவறு! hostname பண்பு ஹோஸ்ட்பெயர் மட்டுமே கொண்டுள்ளது, போர்ட்டைக் கொண்டிருக்காது.
origin
✗ தவறு! origin பண்பு நெறிமுறை, ஹோஸ்ட் மற்றும் போர்ட்டைக் கொண்டுள்ளது, ஆனால் இது WHATWG URL API இல் மட்டுமே கிடைக்கும்.
address
✗ தவறு! address என்பது URL பொருளின் செல்லுபடியாகும் பண்பு அல்ல.